有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Selenium单击切换元素

我正在吃硒

基本上,我希望单击以下元素以切换该元素:

<div class="view-icon fadeIn" title="" data-placement="top" data-toggle="tooltip" data-original-title="Switch to List View">
<i class="fa fa-bars"></i>
</div>

更改为:

<div class="view-icon fadeIn" title="" data-placement="top" data-toggle="tooltip" data-original-title="Switch to Tab View">
<i class="fa fa-list-alt"></i>
</div>

之后,我只想填写表单并测试其输出

我编写的单击此元素的方法:

public void clickAtListView() {
        WebElement listView = driver.findElement(By.xpath("//div[@class='view-icon fadeIn']"));
        listView.click();
    }

然而,我得到:

Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Command duration or timeout: 50 milliseconds

有什么建议可以解释为什么我会出现这种异常

谢谢你的回答

更新

在我看来,当我将Thread.sleep(10000);放在以下位置之前时,列表元素会显示出来:

然而,我还是得到了例外;(


共 (2) 个答案

  1. # 1 楼答案

    正如您发送的异常所说,元素不可见,无法执行任何操作

    因此,您的代码

    WebElement listView = driver.findElement(By.xpath("//div[@class='view-icon fadeIn']"));
    

    获取隐藏元素(例如“视图选项卡”元素)。请试试这个

    WebElement listView = driver.findElement(By.xpath("//div[@data-original-title='Switch to List View']"));
    
  2. # 2 楼答案

    看起来您只需要向XPath添加一个额外的路径:

    driver.findElement(By.xpath("//div/[@class='view-icon fadeIn']/i"));
    

    此外,您可以使用上面的选择器,例如切换视图,而不是为选项卡视图和列表视图定义单独的元素